iT邦幫忙

2025 iThome 鐵人賽

DAY 7
1
DevOps

牧場主的 K8s 放牧日記系列 第 7

Day 7: 外部網域服務建置 - DuckDNS 免費域名設定

  • 分享至 

  • xImage
  •  

牧場主今日工作

昨天我們搭建好了牧場的基礎設施,今天要為我們的數位牧場申請一個真實的門牌地址!在開始之前,先分享一個小插曲:前面在設定的時候,我嘗試將 Bastion 的 IP 加入 MacBook 的 Nameserver,結果出門後,發現網路都連不上了 QQ!後來發現 ping 得通 8.8.8.8,但是連不上 google.com,才想到應該是 DNS 設定跑掉了。

所以今天我們要用正確的方式來設定外部域名服務!

技術背景與概念

https://ithelp.ithome.com.tw/upload/images/20250822/201417944KETuMh92g.png

為什麼需要 DuckDNS?

在實驗環境中,我們面對的挑戰:

IP 位址的限制:

  • 不易記憶:192.168.0.135 比 ithome-rancher.duckdns.org 難記
  • SSL 憑證需求:Let's Encrypt 需要域名才能核發憑證
  • 專業外觀:用域名展示服務比較專業

DuckDNS 的優勢:

  • 完全免費:免費的動態 DNS 服務,提供子域名
  • 簡單設定:只需要 GitHub 帳號就能註冊
  • 自動更新:支援動態 IP 自動更新
  • Let's Encrypt 相容:完全支援 SSL 憑證申請

DuckDNS 註冊與設定

第一步:註冊 DuckDNS 帳號

前往 DuckDNS 官網進行註冊:

# DuckDNS 官網
https://www.duckdns.org/

註冊流程:

  1. Sign in with GitHub

    • 點選 GitHub 登入選項
    • 授權 DuckDNS 存取您的 GitHub 帳號
  2. 完成 reCAPTCHA 驗證

    • 完成人機驗證
    • 確保您不是機器人
  3. 註冊域名

    • 輸入想要的域名:ithome-rancher
    • 最終域名會是:ithome-rancher.duckdns.org
    • 點擊 "add domain" 建立域名
  4. 記住 Token

    • 登入後會看到您的專屬 token
    • 這個 token 用於 API 更新,請妥善保管
    • Token 格式類似:12345678-1234-1234-1234-123456789012

第二步:設定初始 IP

在 DuckDNS 管理頁面:

# 取得您的公網 IP
curl ifconfig.me

# 在 DuckDNS 頁面輸入這個 IP
# 或使用 API 自動更新

設定環境變數:

# 在 bastion-infra-server 上設定
export DUCKDNS_DOMAIN="ithome-rancher"
export DUCKDNS_TOKEN="your-token-here"
export PUBLIC_IP=$(curl -s ifconfig.me)

echo "Domain: ${DUCKDNS_DOMAIN}.duckdns.org"
echo "Token: ${DUCKDNS_TOKEN}"
echo "Public IP: ${PUBLIC_IP}"

驗證 DNS 設定

使用 nslookup 驗證

# 基本域名解析測試
nslookup ithome-rancher.duckdns.org

# 預期輸出類似:
# Server:    8.8.8.8
# Address:   8.8.8.8#53
# 
# Name:      ithome-rancher.duckdns.org
# Address:   YOUR_PUBLIC_IP

使用 dig 驗證

# 詳細 DNS 查詢
dig ithome-rancher.duckdns.org

# 只顯示 IP 地址
dig +short ithome-rancher.duckdns.org

# 從不同 DNS 伺服器查詢
dig @8.8.8.8 ithome-rancher.duckdns.org
dig @1.1.1.1 ithome-rancher.duckdns.org

# 檢查 DNS 記錄類型
dig ithome-rancher.duckdns.org A
dig ithome-rancher.duckdns.org ANY

測試子域名

DuckDNS 支援萬用字元解析,但需要先設定主域名的 IP:

# 注意:以下測試需要先完成 IP 設定才會有結果
# 測試子域名 (都會指向同一個 IP)
nslookup rancher.ithome-rancher.duckdns.org
nslookup app.ithome-rancher.duckdns.org
nslookup api.ithome-rancher.duckdns.org

# 使用 dig 測試
dig +short rancher.ithome-rancher.duckdns.org
dig +short app.ithome-rancher.duckdns.org

# 如果還沒設定 IP,這些指令不會回傳任何結果
# 需要先在 DuckDNS 網頁設定 IP 或使用 API 更新

手動更新測試

完成註冊後,我們來測試 DuckDNS 是否正常運作:

# 首先取得目前的公網 IP
curl ifconfig.me

# 手動更新一次 DuckDNS(確認 API 正常運作)
curl -s "https://www.duckdns.org/update?domains=ithome-rancher&token=${DUCKDNS_TOKEN}&ip="

# 預期回應應該是 "OK"

如果看到 "OK" 回應,表示 DuckDNS API 運作正常!

今日總結與明日預告

今天我們成功為數位牧場申請了真實的門牌地址!透過 DuckDNS 免費服務,我們取得了 ithome-rancher.duckdns.org 域名,並完成了基本的設定與測試。

重點回顧:

  • 完成 DuckDNS 帳號註冊 (使用 GitHub 登入)
  • 成功註冊 ithome-rancher.duckdns.org 域名
  • 完成 DNS 解析驗證 (nslookup 和 dig)
  • 測試 DuckDNS API 更新功能
  • 學會了正確的 DNS 設定方式 (避免像我一樣把網路搞壞 😅)

明天我們將建立 DuckDNS 自動更新機制,並準備 SSL 憑證的整合工作。


💡 牧場主小提示:DuckDNS 的萬用字元功能很實用!*.ithome-rancher.duckdns.org 都會解析到同一個 IP,方便我們建立多個子域名服務!記得不要像我一樣亂改本機的 DNS 設定 XD


上一篇
Day 6: 負載均衡器與儲存服務實作
下一篇
Day 8: SSL 憑證申請與設定 - Let's Encrypt 免費 SSL 憑證
系列文
牧場主的 K8s 放牧日記22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言